.. note::
Ciao, benvenuto nella Community di SunFounder Raspberry Pi, Arduino e ESP32 Enthusiasts su Facebook! Unisciti a noi per approfondire Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
**Perché unirsi?**
- **Supporto tecnico esperto**: Risolvi problematiche post-vendita e sfide tecniche grazie all'aiuto della nostra comunità e del nostro team.
- **Impara e condividi**: Scambia consigli e tutorial per migliorare le tue competenze.
- **Anteprime esclusive**: Ottieni un accesso anticipato ai nuovi annunci di prodotti e alle anteprime.
- **Sconti speciali**: Goditi sconti esclusivi sui nostri nuovi prodotti.
- **Promozioni e giveaway**: Partecipa a promozioni festive e concorsi con premi.
👉 Pronto a esplorare e creare con noi? Clicca [|link_sf_facebook|] e unisciti subito!
2.1.2 Interruttore a Slitta
===========================
Introduzione
------------
In questa lezione, impareremo come utilizzare un interruttore a slitta.
Di solito, l'interruttore a slitta viene saldato su una scheda PCB come
interruttore di alimentazione, ma qui è necessario inserirlo nel breadboard,
quindi potrebbe non essere completamente stabile. Lo utilizziamo sul
breadboard per mostrare la sua funzione.
Componenti
-------------
.. image:: img/list_2.1.2_slide_switch.png
Principio di Funzionamento
-----------------------------
**Interruttore a Slitta**
.. image:: img/image156.jpeg
Un interruttore a slitta, come suggerisce il nome, funziona facendo scorrere
la leva per collegare o interrompere il circuito, e quindi cambiare i circuiti.
I tipi più comuni sono SPDT, SPTT, DPDT, DPTT, ecc. L'interruttore a slitta è
comunemente usato in circuiti a bassa tensione. È caratterizzato da flessibilità
e stabilità ed è ampiamente applicato in strumenti elettrici e giocattoli
elettrici.
Come funziona: imposta il pin centrale come fisso. Quando si sposta la slitta a
sinistra, i due pin a sinistra si collegano; spostandola a destra, si collegano
i due pin a destra. In questo modo funziona come un interruttore che connette o
disconnette i circuiti. Vedi la figura sotto:
.. image:: img/image304.png
Il simbolo del circuito per l'interruttore a slitta è mostrato qui sotto.
Il pin2 nella figura rappresenta il pin centrale.
.. image:: img/image159.png
**Condensatore**
Il condensatore è un componente in grado di immagazzinare energia sotto forma
di carica elettrica o di produrre una differenza di potenziale (tensione statica)
tra le sue piastre, proprio come una piccola batteria ricaricabile.
Unità standard di capacità
Microfarad (μF) 1μF = 1/1.000.000 = 0,000001 = :math:`10^{- 6}` F
Nanofarad (nF) 1nF = 1/1.000.000.000 = 0,000000001 = :math:`10^{- 9}`\ F
Picofarad (pF) 1pF = 1/1.000.000.000.000 = 0,000000000001 = :math:`10^{- 12}`\ F
.. note::
Qui utilizziamo un condensatore **104 (10 x 10\ 4\ PF)**. Come per le
resistenze, i numeri sui condensatori aiutano a leggere i valori una
volta montati. Le prime due cifre rappresentano il valore e l'ultima
cifra indica il moltiplicatore. Così, 104 rappresenta un valore di
10 x 10^4 (in pF), pari a 100 nF.
Schema Elettrico
--------------------
Collega il pin centrale dell’interruttore a slitta al GPIO17 e due LED ai pin
GPIO22 e GPIO27 rispettivamente. Quando sposterai la slitta, vedrai i due LED
accendersi alternativamente.
.. image:: img/image305.png
.. image:: img/image306.png
Procedura Sperimentale
-------------------------
**Passo 1:** Assembla il circuito.
.. image:: img/image161.png
:width: 800
Per Utenti Linguaggio C
^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Passo 2**: Vai alla cartella del codice.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/c/2.1.2
**Passo 3**: Compila.
.. raw:: html
.. code-block::
gcc 2.1.2_Slider.c -lwiringPi
**Passo 4**: Esegui il file eseguibile.
.. raw:: html
.. code-block::
sudo ./a.out
Mentre il codice è in esecuzione, collega l'interruttore a sinistra e il
LED giallo si accenderà; spostalo a destra e si accenderà la luce rossa.
.. note::
Se non funziona dopo l'esecuzione, o compare un messaggio di errore: \"wiringPi.h: No such file or directory", fai riferimento a :ref:`faq_c_nowork`.
**Codice**
.. code-block:: c
#include
#include
#define slidePin 0
#define led1 3
#define led2 2
int main(void)
{
// Se l'inizializzazione di wiringPi fallisce, stampa un messaggio
if(wiringPiSetup() == -1){
printf("setup wiringPi failed !");
return 1;
}
pinMode(slidePin, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
while(1){
// interruttore a slitta in alto, led1 acceso
if(digitalRead(slidePin) == 1){
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
printf("LED1 on\n");
delay(100);
}
// interruttore a slitta in basso, led2 acceso
if(digitalRead(slidePin) == 0){
digitalWrite(led2, LOW);
digitalWrite(led1, HIGH);
printf(".....LED2 on\n");
delay(100);
}
}
return 0;
}
**Spiegazione del Codice**
.. code-block:: c
if(digitalRead(slidePin) == 1){
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
printf("LED1 on\n");
}
Quando l'interruttore a slitta viene spostato a destra, il pin centrale e
quello di destra si collegano; il Raspberry Pi legge un livello alto sul
pin centrale, quindi il LED1 si accende mentre LED2 si spegne.
.. code-block:: c
if(digitalRead(slidePin) == 0){
digitalWrite(led2, LOW);
digitalWrite(led1, HIGH);
printf(".....LED2 on\n");
}
Quando l'interruttore a slitta viene spostato a sinistra, il pin centrale e
quello di sinistra si collegano; il Raspberry Pi legge un livello basso,
quindi il LED2 si accende mentre LED1 si spegne.
Per Utenti Python
^^^^^^^^^^^^^^^^^^^^
**Passo 2**: Vai alla cartella del codice.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/python
**Passo 3**: Esegui.
.. raw:: html
.. code-block::
sudo python3 2.1.2_Slider.py
Durante l'esecuzione del codice, se l'interruttore è posizionato a sinistra,
il LED giallo si accende; a destra, si accende la luce rossa.
**Codice**
.. note::
Puoi **Modificare/Reimpostare/Copiare/Eseguire/Arrestare** il codice qui sotto. Tuttavia, prima di farlo, devi accedere al percorso del codice sorgente come ``davinci-kit-for-raspberry-pi/python``.
.. raw:: html
.. code-block:: python
import RPi.GPIO as GPIO
import time
# Imposta il pin #17 per l'interruttore a slitta, #22 per led1, #27 per led2
slidePin = 17
led1Pin = 22
led2Pin = 27
# Definisci una funzione di setup per alcune impostazioni
def setup():
# Imposta i pin GPIO in modalità BCM
GPIO.setmode(GPIO.BCM)
# Imposta slidePin come ingresso
# Imposta ledPin come uscita,
# e il livello iniziale su High (3.3v)
GPIO.setup(slidePin, GPIO.IN)
GPIO.setup(led1Pin, GPIO.OUT, initial=GPIO.HIGH)
GPIO.setup(led2Pin, GPIO.OUT, initial=GPIO.HIGH)
# Definisci una funzione principale per il processo principale
def main():
while True:
# interruttore a slitta alto, led1 acceso
if GPIO.input(slidePin) == 1:
print ('LED1 ON')
GPIO.output(led1Pin, GPIO.LOW)
GPIO.output(led2Pin, GPIO.HIGH)
# interruttore a slitta basso, led2 acceso
if GPIO.input(slidePin) == 0:
print (' LED2 ON')
GPIO.output(led2Pin, GPIO.LOW)
GPIO.output(led1Pin, GPIO.HIGH)
time.sleep(0.5)
# Definisci una funzione destroy per pulire tutto dopo
# che lo script è terminato
def destroy():
# Spegni i LED
GPIO.output(led1Pin, GPIO.HIGH)
GPIO.output(led2Pin, GPIO.HIGH)
# Libera le risorse
GPIO.cleanup()
# Se esegui questo script direttamente, esegui:
if __name__ == '__main__':
setup()
try:
main()
# Quando viene premuto 'Ctrl+C', il programma
# destroy() verrà eseguito.
except KeyboardInterrupt:
destroy()
**Spiegazione del Codice**
.. code-block:: python
if GPIO.input(slidePin) == 1:
GPIO.output(led1Pin, GPIO.LOW)
GPIO.output(led2Pin, GPIO.HIGH)
Quando l'interruttore a slitta viene spostato a destra, il pin centrale
e quello di destra sono connessi; il Raspberry Pi rileva un livello alto
sul pin centrale, quindi LED1 si accende e LED2 si spegne.
.. code-block:: python
if GPIO.input(slidePin) == 0:
GPIO.output(led2Pin, GPIO.LOW)
GPIO.output(led1Pin, GPIO.HIGH)
Quando l'interruttore a slitta viene spostato a sinistra, il pin centrale e
quello di sinistra sono connessi; il Raspberry Pi rileva un livello basso,
quindi LED2 si accende e LED1 si spegne.
Immagine del Fenomeno
-----------------------
.. image:: img/image162.jpeg